{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "from sklearn import datasets, linear_model, cross_validation, svm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 使用鸢尾花数据\n",
    "def load_data():\n",
    "    iris = datasets.load_iris()\n",
    "    x_train = iris.data\n",
    "    y_train = iris.target\n",
    "    return cross_validation.train_test_split(x_train, y_train, test_size = 0.25, random_state = 0, stratify = y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Coefficients:[[-0.16990304  0.47442881 -0.93075307 -0.51249447]\n",
      " [ 0.02439178  0.21890135 -0.52833486 -0.25913786]\n",
      " [ 0.52289771  0.95783924 -1.82516872 -2.00292778]], intercept [2.0368826 1.1512924 6.3276538]\n",
      "Score: 1.0\n"
     ]
    }
   ],
   "source": [
    "# 非线性分类器SVC-线性核\n",
    "def test_SVC_linear(*data):\n",
    "    x_train, x_test, y_train, y_test = data\n",
    "    svc = svm.SVC(kernel='linear')\n",
    "    svc.fit(x_train,y_train)\n",
    "    print('Coefficients:{0}, intercept {1}'.format(svc.coef_, svc.intercept_))\n",
    "    print('Score: {0}'.format(svc.score(x_test, y_test)))\n",
    "\n",
    "x_train, x_test, y_train, y_test = load_data()\n",
    "test_SVC_linear(x_train, x_test, y_train, y_test )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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TWA+lXrdqfw/PalMLr17bkmXP3/+fIYPH84nPvEJRowYwcKFCznjjDOora1lxIgRXHzxxRvbHnDAAcyYMYO6ujr69u3LxIkT2WuvvRg7diyvv/46AOeffz7//d//vbH9xIkTGTNmDLvtthsPPvggACtXruT4449n+PDhnHDCCdTW1jJjxox3jWvZsmWklOjXrx8A3bp12xhWixYt4thjj2XUqFHstddePPLIIwD86Ec/YuTIkYwcOZKf/exnzX6+KVOmMHbsWEaPHs3HP/5xVq5cWcKfsJRdpcwns8lsklrLdaeOl08We6pal02dV/I+nnnmGc4991zmzJnD4MGDueSSS5g+fTpPPvkkd999N3PmzGk0z7Jlyzj44IN58sknGTt2LNdee22Ty04p8eijj/LjH/94Y/j97Gc/Y+DAgcyZM4dvf/vbPPHEE43m22abbRg3bhzDhg3j5JNP5uabb2b9+vUAnHnmmRxxxBHMnDmTxx57jD322INHHnmEm266iWnTpvHQQw/x85//nFmzZjX6fDU1NVxyySVMnTqVxx9/nFGjRnHZZZcV60cpVZVS55PZZDZJreG6U8fLJ2+9oEy56E9PMefV5QW3//hVD222zfDtevOdD41o1Xh22mknamvf2cN+880386tf/Yq6ujpeffVV5syZw/Dhw981T48ePZgwYQIA++67L/fff3+Ty/7IRz6ysc0LL7wAwAMPPMDXv/51APbaay9GjGh63Ndddx0zZ87knnvu2Rgy11xzDffddx+33HILAF26dKF379488MADHH/88fTo0QOA4447jvvvv58jjzzyXZ/vwQcfZM6cOey///4AvP322xxwwAEt/plJWVVJ+WQ2mU3SBpWUTWA+FTufLPZUVRb8exWvvLFm4+tH/rkUgMF9uzNkqy2K3l/Pnj03Pp83bx6XXXYZjz76KH379uWTn/wka9asaTRP165dNz7v3LkzdXV1TS67W7dum22zKaNGjWLUqFGcfPLJ7LHHHhtPNG7JVZ/qf76UEuPHj+fGG29s8VgktW8+mU2SCuW60zs6Yj5Z7ClTWrIVaYeJf+GFS44u4Wjebfny5Wy55Zb07t2bhQsXcueddzJ+/Pii9vH+97+fSZMmceCBBzJr1qwmD3VYvnw5M2bM4KCDDgJgxowZDBs2DIBDDz2UK6+8krPOOot169axcuVKDjzwQD7/+c/zta99jXXr1nH77bdz6623Nlru/vvvzznnnMPzzz/Pe97zHlauXMmrr77KLrvsUtTPKHVUlZpPZpNU3So1m8B8KgaLPamdjB49muHDh7P77rszbNgw3v/+9xe9jy9/+cuceuqpDB8+fOOjT58+72qTUuIHP/gBp59+Oj169KBXr14bj23/n//5H04//XSuuuoqunTpwlVXXcWYMWM46aSTeO973wvAF7/4Rfbcc0/mz5//ruVuu+22/OpXv+LjH//4xssmf//733eFSqpwZpOkSmU+tZ23XlCH19rLB19691zOPaL1l8ytRHV1ddTV1dG9e3fmzZvHkUceybx58+jSpXK262T10uZgPqkx8ymnI2QTZDefzCY1ZDa9oyPkU1uyqXI+hdTOshZWACtWrOCwww6jrq6OlNLGrUySOpas5ZPZJGVD1rIJsp9P2fkkkujbty+PPfZYuYchSe9iNkmqVFnPJ++zJ0mSJEkZZLEnSZIkSRlksSdJkiRJGWSxJ0mSJEkZZLEntdGSJUvYe++92XvvvRk4cCCDBw/e+HrDPVMKce2117Jo0aKNr0877TSeffbZoozx4osvZsSIEYwaNYp99tmHadOmFWW5kiqX2SSpUplP7cercUpttPXWWzNjxgwALrzwQnr16sV5553X4uVce+21jB49moEDBwLwv//7v0UZ3/33389dd93FE088QdeuXVm8eDF1dXVtWmZdXV2mLkssZZHZJKlSmU/txz17qj4zJ8GlI+HCvrl/Z04qWVfXX389Y8aMYe+99+ZLX/oS69evp66ujlNOOYU999yTkSNHcvnll3PrrbcyY8YMPv7xj2/cqnXAAQcwY8YM6urq6Nu3LxMnTmSvvfZi7NixvP766wDMmzeP/fbbjz333JNvfetb9O3bt9EYFi5cyIABA+jatSsAAwYMYNCgQQA88sgjjB07lr322ov99tuPVatWsXr1aj71qU+x5557Mnr0aP7+978DcM0113Dcccdx6KGHMm7cOAAuueQSxowZw6hRo7j44otL9nOUqkY75ZPZJKlFXHfqsPlksafqMnMS/OlsWPYykHL//unskoTW7Nmzue2223jwwQc3Bs8tt9zCY489xr/+9S9mzZrF7NmzOfXUUzcG1Ybg2hAuGyxbtoyDDz6YJ598krFjx3LttdcC8OUvf5nzzjuP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\n",
      "text/plain": [
       "<Figure size 1080x360 with 3 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 非线性分类器SVC-多项式核\n",
    "def test_SVC_poly(*data):\n",
    "    train_x, test_x, train_y, test_y = data\n",
    "    fig = plt.figure()\n",
    "    fig.set_figheight(5)\n",
    "    fig.set_figwidth(15)\n",
    "    # 测试degree\n",
    "    degrees = range(1,20)\n",
    "    train_score = []\n",
    "    test_score = []\n",
    "    for degree in degrees:\n",
    "        svc = svm.SVC(kernel='poly',degree=degree)\n",
    "        svc.fit(train_x,train_y)\n",
    "        train_score.append(svc.score(train_x,train_y))\n",
    "        test_score.append(svc.score(test_x,test_y))\n",
    "            \n",
    "    # 绘图：\n",
    "\n",
    "    ax = fig.add_subplot(131)\n",
    "    ax.plot(degrees,train_score,label='Training Score',marker='+')\n",
    "    ax.plot(degrees,test_score, label='Testing Score',marker='o')\n",
    "    ax.set_xlabel(r'p')\n",
    "    ax.set_ylabel('score')\n",
    "    ax.set_title('SVC_poly_degree')\n",
    "    ax.set_ylim(0.5,1.1)\n",
    "    ax.legend(loc='best',framealpha=0.5)\n",
    "    \n",
    "    # 测试gamma\n",
    "    gammas = range(1,20)\n",
    "    train_score = []\n",
    "    test_score = []\n",
    "    for gamma in gammas:\n",
    "        svc = svm.SVC(kernel='poly',gamma=gamma,degree=3)\n",
    "        svc.fit(train_x,train_y)\n",
    "        train_score.append(svc.score(train_x,train_y))\n",
    "        test_score.append(svc.score(test_x,test_y))\n",
    "            \n",
    "    # 绘图：\n",
    "\n",
    "    ax = fig.add_subplot(132)\n",
    "    ax.plot(gammas,train_score,label='Training Score',marker='+')\n",
    "    ax.plot(gammas,test_score, label='Testing Score',marker='o')\n",
    "    ax.set_xlabel(r'$\\gamma$')\n",
    "    ax.set_ylabel('score')\n",
    "    ax.set_title('SVC_poly_gamma')\n",
    "    ax.set_ylim(0.5,1.1)\n",
    "    ax.legend(loc='best',framealpha=0.5)\n",
    "    \n",
    "    # 测试r\n",
    "    rs = range(0,20)\n",
    "    train_score = []\n",
    "    test_score = []\n",
    "    for r in rs:\n",
    "        svc = svm.SVC(kernel='poly',gamma=10,degree=3, coef0=r)\n",
    "        svc.fit(train_x,train_y)\n",
    "        train_score.append(svc.score(train_x,train_y))\n",
    "        test_score.append(svc.score(test_x,test_y))\n",
    "            \n",
    "    # 绘图：\n",
    "\n",
    "    ax = fig.add_subplot(133)\n",
    "    ax.plot(rs,train_score,label='Training Score',marker='+')\n",
    "    ax.plot(rs,test_score, label='Testing Score',marker='o')\n",
    "    ax.set_xlabel(r'r')\n",
    "    ax.set_ylabel('score')\n",
    "    ax.set_title('SVC_poly_r')\n",
    "    ax.set_ylim(0.5,1.1)\n",
    "    ax.legend(loc='best',framealpha=0.5)\n",
    "    \n",
    "    plt.show()\n",
    "\n",
    "x_train, x_test, y_train, y_test = load_data()\n",
    "test_SVC_poly(x_train, x_test, y_train, y_test )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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2XVnJo888ghf//rXtxTHb37zm+y3337Mnz+ff/qnf+Kxxx7barl99tmHiRMnMnToUM477zxuv/12Nm3aBMCnPvUpTjnlFObOncvs2bN55zvfycyZM7ntttuYNWsWv//97/n2t7/NvHnztnp/NTU1XHPNNTzwwAM8+uijjBo1iuuuu66tfpWAt16QJEmSOq0v/eJJ5i9Z1er5z/7O77c7z/AD+nL1Xx++U3ne/va3U1f35tGJt99+O9/73vdoaGhgyZIlzJ8/n+HDh79lmZ49e3LaaacBcOSRR/Lggw82u+4PfOADW+Z57rnnAHjooYf43Oc+B8Do0aM5/PDmc//gBz9g7ty53H///VsK2s0338xvfvMbpk2bBkC3bt3o27cvDz30EGeeeSY9e/YE4H3vex8PPvggp5566lve38MPP8z8+fM5+uijAVi/fj3HHnvsDv/OtsWyJ0mSJKlZi//8Oi/95Y0twzP/ewUAg/r1YPBee7T56/Xq1WvL84ULF3LdddfxyCOP0K9fP/72b/+WN954Y6tlunfvvuV5165daWhoaHbdtbW1251nW0aNGsWoUaM477zzeOc737nlIi07csXMxu8vM5k0aRK33nrrDmdpLcueJEmS1EntyB64g678Jc9d854KpnmrVatW0adPH/r27cvSpUu55557mDRpUpu+xjHHHMP06dM57rjjmDdvXrOHia5atYo5c+Zw/PHHAzBnzhyGDh0KwEknncSNN97IJZdcwsaNG1mzZg3HHXccn/jEJ/jsZz/Lxo0b+fnPf84dd9yx1XqPPvpoLr/8cp599lne9ra3sWbNGpYsWcKwYcPa7P1Z9iRJkiR1OGPHjmX48OEcdthhDB06lGOOOabNX+PSSy/lwx/+MMOHD9/ys+eee75lnszkK1/5Ch//+Mfp2bMnvXv33nJe4Le+9S0+/vGP853vfIdu3brxne98h3HjxnHuuefyrne9C4BPfvKTjBw5kkWLFr1lvfvuuy/f+973OPvss7fccuJf//Vf27TseesFSZIkqRPZ2VsvXHvfM3zmlJ2/3UBH1NDQQENDAz169GDhwoWceuqpLFy4kG7dOs4+sV259ULHeReSJEmSOqyiFT2A1atXc/LJJ9PQ0EBmbtlDVxTFeSeSJEmStAP69evH7Nmz2ztGxXifPUmSJEkqIMueJEmSJBWQZU+SJEmSCsiyJ0mSJEkFZNmTJEmStNssX76cMWPGMGbMGPbbbz8GDRq0ZXjz/eZaY+rUqbz88stbhi+44AIWLFjQJhmnTJnC4YcfzqhRozjiiCOYNWtWm6x3d/NqnJIkSZJ2m7333ps5c+YAMHnyZHr37s0VV1yxw+uZOnUqY8eOZb/99gPg+9//fpvke/DBB7n33nt57LHH6N69O8uWLaOhoWGX1tnQ0NAut3Rwz54kSZKkls2dDteOgMn9So9zp1fspW655RbGjRvHmDFj+Pu//3s2bdpEQ0MD559/PiNHjmTEiBFcf/313HHHHcyZM4ezzz57yx7BY489ljlz5tDQ0EC/fv248sorGT16NOPHj+eVV14BYOHChRx11FGMHDmSL3zhC/Tr12+rDEuXLmXgwIF0794dgIEDB7L//vsDMHPmTMaPH8/o0aM56qijeP3111m7di0f+chHGDlyJGPHjuW3v/0tADfffDPve9/7OOmkk5g4cSIA11xzDePGjWPUqFFMmTKlYr/HzSx7kiRJkpo3dzr84jJY+SKQpcdfXFaRwvfEE09w55138vDDD28pbdOmTWP27Nm8+uqrzJs3jyeeeIIPf/jDW0re5tK3uZhttnLlSk444QQef/xxxo8fz9SpUwG49NJLueKKK5g3b96WAtfUpEmT+OMf/8ihhx7Kpz71KR588EEA3njjDc455xxuuOEGHn/8ce69915qa2u5/vrrqa2tZd68edx6662cf/75Ww5Hfeyxx/jZz37GAw88wF133cULL7zAzJkzmTNnDg8//DAPP/xwm/8eG/MwTkmSJKmzuvtKeHley9MXz4KN6946bsNa+PklMPuW5pfZbyScds0OR7n//vuZNWsWdXV1AKxdu5YhQ4YwceJEFixYwGWXXcZ73vMeTj311O2uq2fPnpx22mkAHHnkkVsK28yZM7nrrrsAOO+887jqqqu2WrZv3748+uijPPjgg/z617/mrLPO4hvf+AYjRozgwAMPZOzYsQDsueeeADz00EN89rOfBeDwww/ngAMOYNGiRQCceuqp7LXXXgDce++93H333RxxxBEArF69mmeeeYajjz56h39XrWXZkyRJktS8pkVve+N3QWbysY99jC9/+ctbTZs7dy533303N9xwAz/96U+56aabtrmuxnv6unbtusPn3HXr1o2TTjqJk046ieHDh3PH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\n",
      "text/plain": [
       "<Figure size 1080x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 非线性分类器SVC-高斯核\n",
    "def test_SVC_rbf(*data):\n",
    "    train_x, test_x, train_y, test_y = data\n",
    "    fig = plt.figure()\n",
    "    fig.set_figheight(5)\n",
    "    fig.set_figwidth(15)\n",
    "    # 测试gamma\n",
    "    gammas = range(1,20)\n",
    "    train_score = []\n",
    "    test_score = []\n",
    "    for gamma in gammas:\n",
    "        svc = svm.SVC(kernel='rbf',gamma=gamma)\n",
    "        svc.fit(train_x,train_y)\n",
    "        train_score.append(svc.score(train_x,train_y))\n",
    "        test_score.append(svc.score(test_x,test_y))\n",
    "            \n",
    "    # 绘图：\n",
    "\n",
    "    ax = fig.add_subplot(111)\n",
    "    ax.plot(gammas,train_score,label='Training Score',marker='+')\n",
    "    ax.plot(gammas,test_score, label='Testing Score',marker='o')\n",
    "    ax.set_xlabel(r'$\\gamma$')\n",
    "    ax.set_ylabel('score')\n",
    "    ax.set_title('SVC_rbf')\n",
    "    ax.set_ylim(0.5,1.1)\n",
    "    ax.legend(loc='best',framealpha=0.5)\n",
    "    \n",
    "    \n",
    "    plt.show()\n",
    "\n",
    "x_train, x_test, y_train, y_test = load_data()\n",
    "test_SVC_rbf(x_train, x_test, y_train, y_test )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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9Iioy9939gVy95n9scRhtSgiaiI3L17niBgCfAm4u9RxSZLUGpWUc6VSs9hThxcRG/bw05Yh/48lN+fOSnLzyp1XyuGVI+LmPbymm8klxS+Tu1TyaeAFcvPlSZJUVB0w50ol5WWckiRJkpRBntmTJEmSpAzqXOoA2qq+vj6NGDGi1GFIktrBk08+uTKl1L/UcVQKc6QkdQytzY8VV+yNGDGCWbNm7bujJKniRcSrpY6hkpgjJaljaG1+9DJOSZIkScogiz1JkiRJyiCLPUmSJEnKoIq7Z0+SWqOxsZHVq1ezffv2UoeiVqiurqZv375UVVWVOhRJyjxzZOU40PxosScpk1avXk23bt2or68nIkodjvYipcSGDRtYvXo1/fs78KYkFZs5sjIUIj96GaekTNq+fTs9evQwiVWAiKBHjx5+wyxJ7cQcWRkKkR8t9iRllkmscnisJKl9+blbGQ70OFnsSZIkSVIGWexJUhGsWrWKiRMnMnHiRAYNGsSQIUN2Pt+2bVurtvHRj36UefPm7bXPTTfdxB133FGIkPnFL37BxIkTmTBhAqNHj+Z73/teQbYrSVJz5sj2EymlUsfQJpMnT06zZs0qdRiSytwbb7zB4MGD27zetQ++xJWnjipoLNdccw09evTgc5/73NuWp5RIKdGpU+m/d9u6dSuHHHIIs2bNYvDgwWzdupVXX32VUaP2/71o6+tr6ZhFxJMppcn7HUQHY46U1BrmyLYpdY48kPxY+ndPksrIdQ/PL+r2FyxYwOjRo/nABz7AmDFjWLJkCZdddhmTJ09mzJgxTJs2bWff448/ntmzZ9PQ0EBdXR1Tp05lwoQJHHvssSxfvhyAq666in//93/f2X/q1KlMmTKFI444gsceewyAjRs38r73vY/Ro0dz/vnnM3nyZGbPnv22uNauXUtKib59+wLQtWvXnUls6dKlnHvuuYwfP54JEybw+OOPA/DNb36TsWPHMnbsWG644YY9vr7777+fY489lkmTJnHhhReycePGIr7DkqRiMUdWXo506gVJmffle+fy/BvrWt3/wu/87z77jB7ciy+9Z8x+xfPiiy9y++23M3ly7gu56dOn07dvXxoaGjjppJM4//zzGT169NvWWbt2Le9+97uZPn06n/3sZ7n11luZOnXqbttOKfHEE09wzz33MG3aNH71q19xww03MGjQ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\n",
      "text/plain": [
       "<Figure size 1080x360 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 非线性分类器SVC-sigmoid核\n",
    "def test_SVC_sigmoid(*data):\n",
    "    train_x, test_x, train_y, test_y = data\n",
    "    fig = plt.figure()\n",
    "    fig.set_figheight(5)\n",
    "    fig.set_figwidth(15)\n",
    "    \n",
    "    # 测试gamma\n",
    "    gammas = np.logspace(-2, 1)\n",
    "    train_score = []\n",
    "    test_score = []\n",
    "    for gamma in gammas:\n",
    "        svc = svm.SVC(kernel='sigmoid',gamma=gamma,coef0=0)\n",
    "        svc.fit(train_x,train_y)\n",
    "        train_score.append(svc.score(train_x,train_y))\n",
    "        test_score.append(svc.score(test_x,test_y))\n",
    "            \n",
    "    # 绘图：\n",
    "\n",
    "    ax = fig.add_subplot(121)\n",
    "    ax.plot(gammas,train_score,label='Training Score',marker='+')\n",
    "    ax.plot(gammas,test_score, label='Testing Score',marker='o')\n",
    "    ax.set_xlabel(r'$\\gamma$')\n",
    "    ax.set_ylabel('score')\n",
    "    ax.set_title('SVC_sigmoid_gamma')\n",
    "    ax.set_xscale('log')\n",
    "    ax.set_ylim(0.0,1.1)\n",
    "    ax.legend(loc='best',framealpha=0.5)\n",
    "    \n",
    "    # 测试r\n",
    "    rs = np.linspace(0,5)\n",
    "    train_score = []\n",
    "    test_score = []\n",
    "    for r in rs:\n",
    "        svc = svm.SVC(kernel='sigmoid',gamma=0.01,coef0=r)\n",
    "        svc.fit(train_x,train_y)\n",
    "        train_score.append(svc.score(train_x,train_y))\n",
    "        test_score.append(svc.score(test_x,test_y))\n",
    "            \n",
    "    # 绘图：\n",
    "\n",
    "    ax = fig.add_subplot(122)\n",
    "    ax.plot(rs,train_score,label='Training Score',marker='+')\n",
    "    ax.plot(rs,test_score, label='Testing Score',marker='o')\n",
    "    ax.set_xlabel(r'r')\n",
    "    ax.set_ylabel('score')\n",
    "    ax.set_title('SVC_sigmoid_r')\n",
    "    ax.set_ylim(0.0,1.1)\n",
    "    ax.legend(loc='best',framealpha=0.5)\n",
    "    \n",
    "    plt.show()\n",
    "\n",
    "x_train, x_test, y_train, y_test = load_data()\n",
    "test_SVC_sigmoid(x_train, x_test, y_train, y_test )"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
